package com.TheEndWork.secondDay;

import java.time.LocalDate;
import java.time.LocalTime;
import java.util.Arrays;

/**
 * @authoer zsj
 * @date 2022/5/24 16:03
 *
 * 算术基本定理:任何一个大于1的自然数 N,如果N不为质数，那么N可以唯一分解成有限个质数的乘积  @很重要
 */
public class alg {
    /**
     * @leecode 977
     */
    public int[] sortedSquares(int[] nums) {
        for (int i = 0; i < nums.length; i++) {
            nums[i] =nums[i]*nums[i];
        }
        Arrays.sort(nums);
        return nums;
    }

    /**
     * 给你一个数组，将数组中的元素向右轮转 k 个位置，其中 k 是非负数。
     * 翻转数组思想，一共翻转三次
     */
    public void rotate(int[] nums, int k) {
        k %=nums.length;//防止k为0以及数组的长度为1&2
        reverse(nums, 0, nums.length - 1); //7654321
        reverse(nums,k,nums.length-1);//7651234
        reverse(nums,0,k-1);//5671234
    }

    /**
     * 颠倒数组元素的方法
     *
     * @param arr   传入数组
     * @param start 开始倒转位置
     * @param end   结束倒转位置
     */
    public static void reverse(int[] arr, int start, int end) {
        while (start < end) {
            int temp = arr[start];
            arr[start] = arr[end];
            arr[end] = temp;
            start += 1;
            end -= 1;
        }
    }


    public static void main(String[] args) {
        System.out.println(LocalDate.now());

    }


}
